//函数指针的简单实用
#include <stdio.h>
 
int max(int x, int y)
{
    return x > y ? x : y;
}

int min(int x, int y)
{
    return x < y ? x : y;
}

int max_min(int (*p)(int,int),int (*q)(int,int),int a,int b,int c)
{
    int max_m=p(p(a,b),c);
    int min_m=q(q(a,b),c);
    return max_m-min_m;
}

int main(void)
{
    /* p 是函数指针 */
    int (* p)(int, int) = & max; // &可以省略
    int (*q)(int, int)=min;
    int a, b, c, d;
 
    printf("请输入三个数字:");
    scanf("%d %d %d", & a, & b, & c);
 
    /* 与直接调用函数等价，d = max(max(a, b), c) */
    d = p(p(a, b), c); 
    int ans=max_min(p,q,a,b,c);
    printf("最大最小值的差为:%d\n",ans);
    printf("最大的数字是: %d\n", d);
 
    return 0;
}